/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.losalpes.persistence.entity;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Temporal;

/**
 * @author Alejandra Rubio
 */
@Entity
public class Promocion implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_VEND")
    @SequenceGenerator(name = "SEQ_PROM", allocationSize = 1, sequenceName = "promocion_seq")
    private Long idPromocion;
    @OneToOne
    private Mueble mueble;

    @Temporal(javax.persistence.TemporalType.DATE)
    private Date fechaInicio;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date fechaFin;
    private String nombre;
    private int cantidadBase;
    private int cantidadAOfertar;

    /**
     *Representa las promociones definidas para cada mueble
     */
    public Promocion() {
    }

    /**
     * Construye promocion
     * @param mueble Mueble al que le aplica la promocion
     * @param fechaInicio Fecha en la que inicia la vigencia de la promocion
     * @param fechaFin Fecha en la que termina la vigencia de la promocion
     * @param nombre Descripcion de la promocion
     * @param cantidadBase
     * @param cantidadAOfertar
     */
    public Promocion(Mueble mueble, Date fechaInicio, Date fechaFin, String nombre, int cantidadBase, int cantidadAOfertar) {
        this.mueble = mueble;
        this.fechaInicio = fechaInicio;
        this.fechaFin = fechaFin;
        this.nombre = nombre;
        this.cantidadBase = cantidadBase;
        this.cantidadAOfertar = cantidadAOfertar;
    }

    /**
     *
     * @return
     */
    public Long getIdPromocion() {
        return idPromocion;
    }

    /**
     *
     * @param idPromocion
     */
    public void setIdPromocion(Long idPromocion) {
        this.idPromocion = idPromocion;
    }

    /**
     * Obtiene la cantidad a ofertar de la promocion
     * @return
     */
    public int getCantidadAOfertar() {
        return cantidadAOfertar;
    }

    /**
     * Modifica la cantidad a ofertar de una promocion
     * @param cantidadAOfertar
     */
    public void setCantidadAOfertar(int cantidadAOfertar) {
        this.cantidadAOfertar = cantidadAOfertar;
    }

    /**
     * Obtiene la cantidad base de la promocion
     * @return
     */
    public int getCantidadBase() {
        return cantidadBase;
    }

    /**
     * Modifica la cantidad base de la promocion
     * @param cantidadBase
     */
    public void setCantidadBase(int cantidadBase) {
        this.cantidadBase = cantidadBase;
    }

    /**
     * Obtiene el mueble de la promocion
     * @return
     */
    public Mueble getMueble() {
        return mueble;
    }

    /**
     * Modifica el mueble al que aplica la promocion
     * @param mueble
     */
    public void setMueble(Mueble mueble) {
        this.mueble = mueble;
    }

    /**
     *Obtiene la descripcion de la promocion
     * @return
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * Modifica la descripcion de la promocion
     * @param nombre
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * Obtiene la fecha de fin de la vigencia de la promocion
     * @return
     */
    public Date getFechaFin() {
        return fechaFin;
    }

    /**
     * Modifica la fecha de fin de la vigencia de la promocion
     * @param fechaFin
     */
    public void setFechaFin(Date fechaFin) {
        this.fechaFin = fechaFin;
    }

    /**
     * Obtiene la fecha de inicio de la vigencia de la promocion
     * @return
     */
    public Date getFechaInicio() {
        return fechaInicio;
    }

    /**
     * Modifica la fecha de fin de la vigencia de la promocion
     * @param fechaInicio
     */
    public void setFechaInicio(Date fechaInicio) {
        this.fechaInicio = fechaInicio;
    }

    @Override
    public boolean equals(Object arg0) {
        if (arg0 instanceof Promocion) {
            Promocion other = (Promocion) arg0;
            return other.getIdPromocion().equals(this.idPromocion);
        }
        return false;
    }
}
